Software
This page is a list of software I use. It's mostly accurate as of 2025-02-10.
Operating systems
Desktop and laptop
On desktops and laptops, I run Arch Linux or Linux Mint. I tend to choose Arch for machines that only I will use and Mint for machines that will also be used by other people.
I've used these distros at various times:
- CentOS
- Debian
- Endevour OS
- Endless OS
- Fedora
- Gentoo
- Linux From Scratch
- Manjaro
- MX Linux
- openSUSE
- Pop! OS
- Red Hat
- Slackware
- Ubuntu
Some of the distros I haven't used, but am interested in trying:
Server
"Any distro can be a server" may be true, but distros with long-term support and a defined release schedule are better suited to most use cases for servers.
On servers, I run Debian, Alpine, or Rocky. Debian is my default choice. Where install size or simplicity is important, I use Alpine. Where compatibility with RHEL is required, I use Rocky.
At various times, I've run the following distros on servers:
Live media
To me, a live OS is one that is primarily intended to be used via removable media. Most distributions have a bootable image that is used for installation, but don't meet my definition for a live OS.
I maintain Snal Linux, so that's my "normal" live linux distribution. As you might expect, I've added the applications I like to Snal, so I rarely need to use a different live image. Special use cases or hardware platforms other than x86_64 call for a different distro:
Live operating systems I've used over the years:
- Damn Small Linux - as of 2024, DSL is active again!
- Gnoppix
- GRML
- Kali
Knoppix- dormantMovix- discontinued- Puppy
- Slax
- SliTaz
- SystemRescue
- Tiny Core
tomsrtbt- discontinued
Live operating systems haven't used, but am interested in trying:
Applications
On Arch machines, I run X Windows without a graphical display manager. Instead, I call startx from my ~/.bashrc
. Inside of X windows, I use i3 to manage windows.
On Linux Mint machines, I install the Xfce edition and use the default graphical display manager, desktop environment, and window manager.
Because I use Linux as my OS, there are lots of options for applications. Here are a number of general preferences that inform my choices of which applications I use:
- Philosophically and practically, I prefer free and open source software. Philosophic reasoning: FOSS, if done right, is more equitable and more sustainable. Practical reasoning: FOSS applications can't just disappear: someone can always fork the project.
- I prefer applications that follow the Unix philosophy: do one thing well.
- I spend most of my computer time at a terminal and I often work remotely via ssh. I prefer terminal applications over graphical applications.
- I use several different Linux distributions and, though I use different graphical environments, I like to have the same applications available. I prefer applications that are easily available across a range of distributions.
- I use several different computers. I prefer applications that store configs in text files so that I can easily store, version control, and sync configurations.
- I prefer applications written in languages I understand. In diminishing order of familiarity, I understand bash, rust, perl, and c. Some are more commonly used to develop applications than others.
Web Browser
- Firefox: this is my main browser.
- Luakit: I've only been using Luakit for a little while, but I've been impressed with the speed and happy with the vi-inspired key bindings.
- Dillo: this is a lightweight and independently developed browser.
Midori: I stopped using this after it switched to Electron.- elinks: this is my main terminal browser.
- lynx: I use this if elinks isn't available.
Graphical Terminal Interface
- lxterminal: I use the terminal from the LXDE project no matter what graphical environment I'm using. It has relatively few dependencies and low RAM usage but still has tabs. It is available in almost all distributions. It has reasonable default key bindings that don't interfere with others that I use. It saves config settings to human-readable text files.
- Xterm: I use this if lxterminal isn't available.
Terminal Multiplexer
- tmux: I use tmux as a terminal multiplexer. This is especially useful for remote connections;
ssh
to a remote host and work inside of a tmux session. If your network connection drops, or you switch to a different network, or your local computer shuts down, the remote session detaches and keeps the programs running. Once youssh
back into the remote host, you can reattach to continue the session. You can have multiple terminals within one session and even automatically start multiple terminals with custom commands on startup with a simple bash script. - GNU Screen: I use GNU Screen on systems where tmux isn't installed. I used GNU Screen as my primary terminal multiplexer until 2024, when I ported my workflows over to tmux.
Shell
- bash: I use
bash
on most machines. I maintain some scripts that are mostly in bash, so I've never branched out into the alternatives such ascsh
,tcsh
, andzsh
. - busybox sh: I use the busybox
sh
in some situations.
Text Editor
- neovim: I use
neovim
where it is available. I am comfortable withvi
style editors andneovim
has features that work for me. - vim: I use
vim
whereneovim
is not available. This was my go-to editor for many years. - busybox vi: I use the busybox
vi
in some situations. - micro: I use
micro
when I want a non modal terminal editor. - xed: I use
xed
on occasion. - mousepad: I also use
mousepad
on occasion.
Document Converters
- LaTeX: If I'm writing a document that I want to format, I often use LaTeX and output to PDF.
- mkd2html: If I'm writing a document that only needs basic formatting, I often write in CommonMark and convert to other formats as needed.
- marp: If I'm putting togther a presentation, I typically use marp and open the result in a web browser.
- LibreOffice: I use LibreOffice for collaborating with people using Microsoft or Google office programs. I also use it to convert documents and to work with spreadsheets.
- PanDoc: Occasionally, I use PanDoc to convert documents.
IRC Client
- weechat: I use
weechat
for Internet Relay Chat. I really like the combination of a terminal IRC client and a terminal multiplexer. I mostly connect to liberachat, but I also use other networks. irssi: I used to useirssi
for Internet Relay Chat, but I switched to weechat in 2024.
File Dump
- bat: I use
bat
in place ofcat
. The features that are most helpful to me are syntax highlighting, git integration, and automatic paging. I typically aliascat
andless
tobat
.
File List
- eza: I use
eza
in place ofls
. The features that are most helpful to me are git integration and symlink awareness. I typically aliasls
toeza
.